package coms.dataaccess.hibernate;

import coms.dataaccess.DAOAbstractFactory;
import coms.dataaccess.dao.*;

public class HibernateDAOFactory implements DAOAbstractFactory {

    private LocationDAO locationDAO;
    private ConferenceDAO conferenceDAO;
    private ConferenceRegistrationDAO conferenceRegistrationDAO;
    private ConferenceItemBookingDAO conferenceItemBookingDAO;
    private ConferenceItemDAO conferenceItemDAO;
    private ConferenceItemTypeDAO conferenceItemTypeDAO;
    private EventDAO eventDAO;
    private KeywordDAO keywordDAO;

    private PresentationTypeDAO presentationTypeDAO;
    private ProfileDAO profileDAO;
    private PublicationDAO publicationDAO;
    private ReviewDAO reviewDAO;
    private UserDAO userDAO;

    public HibernateDAOFactory() {

        this.conferenceDAO = new ConferenceDAOImpl();
        this.conferenceItemBookingDAO = new ConferenceItemBookingDAOImpl();
        this.conferenceItemDAO = new ConferenceItemDAOImpl();
        this.conferenceItemTypeDAO = new ConferenceItemTypeDAOImpl();
        this.conferenceRegistrationDAO = new ConferenceRegistrationDAOImpl();
        this.eventDAO = new EventDAOImpl();
        this.keywordDAO = new KeywordDAOImpl();
        this.locationDAO = new LocationDAOImpl();        
        this.presentationTypeDAO = new PresentationTypeDAOImpl();
        this.profileDAO = new ProfileDAOImpl();
        this.publicationDAO = new PublicationDAOImpl();
        this.reviewDAO = new ReviewDAOImpl();
        this.userDAO = new UserDAOImpl();

    }

    @Override
    public ConferenceDAO getConferenceDAO() {
        return conferenceDAO;
    }

    @Override
    public ConferenceItemBookingDAO getConferenceItemBookingDAO() {
        return conferenceItemBookingDAO;
    }

    @Override
    public ConferenceRegistrationDAO getConferenceRegistrationDAO() {
        return this.conferenceRegistrationDAO;
    }

    @Override
    public ConferenceItemDAO getConferenceItemDAO() {
        return conferenceItemDAO;
    }

    @Override
    public ConferenceItemTypeDAO getConferenceItemTypeDAO() {
        return conferenceItemTypeDAO;
    }

    @Override
    public EventDAO getEventDAO() {
        return eventDAO;
    }

    @Override
    public KeywordDAO getKeywordDAO() {
        return keywordDAO;
    }

    @Override
    public LocationDAO getLocationDAO() {
        return locationDAO;
    }
    
    @Override
    public PresentationTypeDAO getPresentationTypeDAO() {
        return presentationTypeDAO;
    }

    @Override
    public ProfileDAO getProfileDAO() {
        return profileDAO;
    }

    @Override
    public PublicationDAO getPublicationDAO() {
        return publicationDAO;
    }

    @Override
    public ReviewDAO getReviewDAO() {
        return reviewDAO;
    }

    @Override
    public UserDAO getUserDAO() {
        return userDAO;
    }
}
